package com.secsys.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.secsys.dto.StoRationedsharesDTO;
import com.secsys.model.TbStoRationedshares;
import com.secsys.model.TbStoStock;
import com.secsys.service.StoRationedSharesService;
import com.secsys.service.StoStockService;

public class StoRationedSharesServiceImpl extends
		ServiceImpl<TbStoRationedshares, Integer> implements StoRationedSharesService {

	private StoStockService stoStockService;
	
	@Override
	public List<StoRationedsharesDTO> queryStoRationedsharesByStockCode(
			int stockCode) {
		TbStoStock tbStoStock=stoStockService.findByProperty("from TbStoStock where stockCode=?", String.valueOf(stockCode)).get(0);
		return queryStoRationedsharesByTbStoStock(tbStoStock);
	}

	@Override
	public List<StoRationedsharesDTO> queryStoRationedsharesByTbStoStock(
			TbStoStock tbStoStock) {
		String hql="from TbStoRationedshares as tsr where tsr.tbStoStock=?";
		return foreachGetDtoFromPojo(this.findByProperty(hql, tbStoStock)); 
	}

	/**
	 * 批量地将持久化对象POJO的tbStoRationedshares转换成领域对象DTO的StoRationedsharesDTO
	 * @param List<TbStoRationedshares>
	 * 			持久化对象POJO的List<TbStoRationedshares>
	 * @return	List<StoRationedsharesDTO> 
	 * 			领域对象DTO的List<StoRationedsharesDTO> 
	 */
	private List<StoRationedsharesDTO> foreachGetDtoFromPojo(List<TbStoRationedshares> tbStoRationedshareList){
		List<StoRationedsharesDTO> stoRationedsharesDTOList=new ArrayList<StoRationedsharesDTO>();
		for (TbStoRationedshares tbStoRationedshares : tbStoRationedshareList) {
			stoRationedsharesDTOList.add(getDtoFromPojo(tbStoRationedshares));
		}
		return stoRationedsharesDTOList;
	}
	
	/**
	 * 将持久化对象POJO的tbStoRationedshares转换成领域对象DTO的StoRationedsharesDTO
	 * @param tbStoRationedshares
	 * 			持久化对象POJO的tbStoRationedshares
	 * @return	StoStockdailyDTO
	 * 			领域对象DTO的StoRationedsharesDTO
	 */
	private StoRationedsharesDTO getDtoFromPojo(TbStoRationedshares tbStoRationedshares){
		StoRationedsharesDTO stoRationedsharesDTO =new StoRationedsharesDTO(
				tbStoRationedshares.getId(),tbStoRationedshares.getAllotDate(),
				tbStoRationedshares.getType(),tbStoRationedshares.getRatio()
		);
		return stoRationedsharesDTO;
	}
	
	public StoStockService getStoStockService() {
		return stoStockService;
	}

	public void setStoStockService(StoStockService stoStockService) {
		this.stoStockService = stoStockService;
	}

}
